import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
import setting from "@/store/storage/storage-setting";
import '@/assets/css/commons.css';

// 导入ElementUI组件及样式
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
// 注册使用element-ui组件
Vue.use(ElementUI);

// 导入及注册使用v-charts组件
import VCharts from 'v-charts';
Vue.use(VCharts);

// 阻止、启动生产消息，默认为false
Vue.config.productionTip = false;

// 注册全局事件总线
Vue.prototype.$bus = Vue.prototype.$bus || new Vue();

// 注册全局API
// Vue.prototype.$api = Vue.prototype.$api || {};
// function importAllModuleApi(r) {
//   r.keys().forEach(key => {
//     let moduleName = String(key).substring(0, key.length - 3);
//     moduleName = moduleName.substring(moduleName.lastIndexOf('-') + 1, moduleName.length);
//     Vue.prototype.$api[moduleName] = r(key).default;
//   });
// }
// importAllModuleApi(require.context('./api', true, /api\-[A-Za-z]*\.js$/));

// 配置文件
const config = require("@/config");
if (!config.isEnvProduction()) {
  console.info('环境变量配置：', config);
}

// 注册使用router、store
const vue = new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app');

/**
 * 路由守卫
 */
router.beforeEach((to, from, next) => {
  // console.log('beforeEach to', to);
  next();
});

/**
 * 路由守卫
 * 解决跳转后发送全局事件，通知首页左边菜单激活当前菜单项
 */
router.afterEach((to, from) => {
  // console.log('afterEach to', to);
  vue.$bus.$emit("global.routerChanged", to.fullPath);
});

// 加载全局缓存设置参数
setting.loadGlobalStorageSetting(store);
